Theory of computation lecture for gate